# BAD
def test(a: int):
    if a > 1:
        yield "a"
    yield "b"


result = list(test(2))  # 预期是 ["a"]， 实际是 ["a", "b"]，因为 yield 仅是让度 CPU 而非结束当前函数
print(result)


# GOOD
def test(a: int):
    if a > 1:
        yield "a"
        return  # 控制好函数的生命周期，以达到预期效果
    yield "b"
